package hbase.HbaseStudy;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;

public class Hb02_createNamespace {
    private static String namespace = "sccc01";
    private static String table = "t3";


    public static void main(String[] args) throws IOException {
        Configuration conf = HBaseConfiguration.create();
        Connection HConn = ConnectionFactory.createConnection(conf);
        Admin admin = HConn.getAdmin();

        try {
            // 检查命名空间是否存在
            boolean namespaceExists = false;
            for (NamespaceDescriptor descriptor : admin.listNamespaceDescriptors()) {
                if (descriptor.getName().equals(namespace)) {
                    namespaceExists = true;
                    break;
                }
            }
            // 如果命名空间不存在则创建该命名空间
            if(!namespaceExists){
                NamespaceDescriptor namespaceBulid = NamespaceDescriptor.create(namespace).build();
                admin.createNamespace(namespaceBulid);
                System.out.println(namespace+"创建成功");
            }else {
                System.out.println(namespace+"已经存在");
            }

            // 在命名空间中建表
            TableDescriptorBuilder tableBulid = TableDescriptorBuilder
                    .newBuilder(TableName.valueOf(namespace+":"+table)); // 创建表对象
            ColumnFamilyDescriptor info = ColumnFamilyDescriptorBuilder.of("info"); // 创建列柱对象
            tableBulid.setColumnFamily(info); // 往表对象中添加列柱
            TableDescriptor tableFact_build = tableBulid.build(); // 通过表对象来构建表描述符
            admin.createTable(tableFact_build); // 提交表描述符
            System.out.println(namespace+"中"+table+"创建成功");
        } finally {
            admin.close();
            HConn.close();
        }

    }
}
